package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.GiftCard;
import com.tbit.uqbike.object.pojo.dto.EditGiftCardExpireDateDTO;
import com.tbit.uqbike.object.pojo.vo.GiftCardVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author chenmengran
 * @Description: 礼品卡
 * @date 2019\12\28 002815:02
 */
public interface GiftCardDao {

    /**
     * 添加礼品卡
     *
     * @param giftCard
     */
    void insertUP(GiftCard giftCard);

    /**
     * 批量添加
     *
     * @param list
     */
    void addBatch(List<GiftCard> list);

    /**
     * 查询编号是否存在
     *
     * @param list
     * @return
     */
    List<String> getByNOs(List<String> list);

    /**
     * 更新礼品卡
     *
     * @param giftCard
     */
    void update(GiftCard giftCard);

    /**
     * 通过主建查询
     *
     * @param id
     */
    GiftCard getById(Integer giftcardId);

    /**
     * 查找礼品卡
     *
     * @return
     */
    List<GiftCardVO> queryPage(Map<String, Object> params);

    /**
     * 获取总数
     *
     * @param accountId
     * @return
     */
    Integer getTotal(@Param("accountId") Integer accountId, @Param("cardNO") String cardNO,
                     @Param("startTime") Date startTime, @Param("endTime") Date endTime,
                     @Param("userId") Integer userId, @Param("cardType") Integer cardType);

    /**
     * 分页查询用户的礼品卡
     *
     * @param params
     * @return
     */
    List<GiftCard> queryPageByUser(Map<String, Object> params);

    /**
     * 获取用户礼品卡总数
     *
     * @param accountId
     * @return
     */
    Integer getTotalByUser(Map<String, Object> params);

    /**
     * 查询礼品卡信息
     *
     * @param cardNO
     * @return
     */
    GiftCard queryByCardNO(@Param("cardNO") String cardNO);

    /**
     * 修改礼品卡失效时间
     *
     * @param editGiftCardExpireDateDTO
     */
    void editGiftCardExpireDate(EditGiftCardExpireDateDTO editGiftCardExpireDateDTO);

}
